<?php

 /**
 * View
 * 
 * Camada base de visulalização de dados.
 * A classe de visualização de dados de todos os objetos do sistema herdam métodos desta classe.
 *
 * @package  Base
 * @category view
 * @name view.php
 * @author Janaína Paixão <janainap@gmail.com>
 * @copyright Elo Assessoria e Sistemas
 * @license Software Poprietário
 * @version v1.0
 * @since v1.0
 */
class View
{
    /**
     * View::mostrarNaTela()
     * 
     * Exibe a tela indicada no parâmetro $template.
     * 
     * @access public
     * @since v1.0
     * @author Janaína Paixão <janainap@gmail.com>
     * @param string $template - Endereço do arquivo(template) que será exibido na tela.
     */

    public function mostrarNaTela($template)
    {
         
        $info = $GLOBALS['info']; 
        
        try
		{
        	require($template);
        	
 		}catch(Exception $e){
 			
			 return false;
 		}
    }


  
     /**
     * View::formata_hora()
     * 
     * Converte hora originada do banco de dados(hh:mm:ss) para o formato (hh:mm)
     * Retorna uma string contendo a hora no formato hh:mm.
     * 
     * @access public
     * @since v1.0
     * @author Janaína Paixão <janainap@gmail.com>
     * @param string $hora - Data no formato hh:mm:ss.
     */
    public function formata_hora($hora)
    {
        $h = explode(':', $hora);
        return $h[0] . ":" . $h[1];
    }


    
    /**
     *ProdutoView::listar()
     *
     * Exibe listagem de registros encontrados com opções para editar e excluir
     *
     * @access public
     * @author Fabio Ferraz Rufino
     * @since  v1.0
     */ 
    public function montarPaginacao($quantreg,$numreg,$pg)
    {
             
        $quant_pg = ceil($quantreg/$numreg);
	    $quant_pg++;
	    $paginas = "<div class='grid_16' align='center'>";
    	
        // Verifica se esta na primeira página, se nao estiver ele libera o link para anterior
    	if ( $pg > 0) { 
    		$paginas .= "<a href='#' id='".($pg-1) ."' target='' class=pg><b>&laquo; anterior</b></a>";
    	} else { 
    		$paginas .= "<font color=#CCCCCC>&laquo; anterior</font>";
    	}
	
    	// Faz aparecer os numeros das página entre o ANTERIOR e PROXIMO
    	for($i_pg=1;$i_pg<$quant_pg;$i_pg++) { 
    		// Verifica se a página que o navegante esta e retira o link do número para identificar visualmente
    		if ($pg == ($i_pg-1)) { 
    			$paginas .= "&nbsp;<span class=pgoff>[$i_pg]</span>&nbsp;";
    		} else {
    			$i_pg2 = $i_pg-1;
    			$paginas .= "&nbsp;<a href='#' id='".$i_pg2."' target='' class=pg><b>$i_pg</b></a>&nbsp;";
    		}
    	}
	
    	// Verifica se esta na ultima página, se nao estiver ele libera o link para próxima
    	if (($pg+2) < $quant_pg) { 
    		$paginas .= "<a href='#' id='".($pg+1)."' target='' class=pg><b>próximo &raquo;</b></a>";
    	} else { 
    		$paginas .= "<font color=#CCCCCC>próximo &raquo;</font>";
    	}
        
        return $paginas.'</div>';
    }

  
 

    /**
     * View::formata_endereco()
     * 
     * Cria um formato padrão para a exibição do endereço a partir dos parâmetros especificados.
     * Retorna uma string contendo o endereço no formato "Rua, número - Complemento - Bairro - CEP"
     * 
     * @access public
     * @since v1.0
     * @author Janaína Paixão <janainap@gmail.com>
     * @param string $rua - Contém a rua, logradouro ou avenida que compõe o endereço.
     * @param string $num - Contém o número que compõe o endereço.
     * @param string $compl - Contém um complemento ou informação relevante para localizar o endereço.
     * @param string $bairro - Contém o bairro que compõe o endereço.
     * @param string $cep - Contém o cep do local.
     */
    public function formata_endereco($rua, $num, $compl, $bairro, $cep = "")
    {
        if ($rua <> '')
        {
            $endereco = $rua;
            if ($num <> '')
            {
                $endereco .= ", " . $num;
                if ($compl <> '')
                {
                    $endereco .= " - " . $compl;
                    if ($bairro)
                    {
                        $endereco .= " - " . $bairro;
                        if ($cep <> '')
                        {
                            $endereco .= ' - ' . $cep;
                        }
                    }

                }
            }
            return $endereco;
        }


    }
    
    
        /**
     * View::data_bd_form()
     * 
     * Converte datas originadas do banco de dados(yyyy-mm-dd) para o formato utilizado nos formulários (dd/mm/yyyy).
     * Retorna uma string contendo a data no formato dd/mm/yyyy.
     * 
    * @access public
     * @since v1.0
     * @author Janaína Paixão <janainap@gmail.com>
     * @param string $data - Contém a data no formato yyyy-mm-dd.
     */
    public function data_bd_form($data)
    {
        if(!empty($data))
        {
            $t = explode(" ", $data);
            $d = explode("-", $t[0]);
            $nova_data = $d[2] . "/" . $d[1] . "/" . $d[0];
            return $nova_data;
        }
    }
    
    
    /**
     * View::CalcularIdade()
     * 
     * Calcula a idade a partir da data específicada no parâmetro $nascimento.
     * Retorna a idade obtida.
     * 
     * @access public
     * @author Janaína Paixão <janainap@gmail.com>
     * @param mixed $nascimento - Data no formato yyyy-mm-dd.
     * @since  v1.0
     */
    public function CalcularIdade($nascimento)
    {
        $t = explode(' ', $nascimento);
        $d = explode('-', $t[0]);
        $dia = trim(ereg_replace(" ", "0", $d[2]));
        $mes = trim(ereg_replace(" ", "0", $d[1]));
        $ano = trim(ereg_replace(" ", "0", $d[0]));
       /* if (!checkdate($mes, $dia, $ano))
        {
            echo "A data que vc informou está errada [ $dia/$mes/$ano ]";
            exit;
        }*/
        $dia_atual = date("d");
        $mes_atual = date("m");
        $ano_atual = date("Y");
        $idade = $ano_atual - $ano;
        if ($mes > $mes_atual)
        {
            $idade--;
        }
        if ($mes == $mes_atual and $dia_atual < $dia)
        {
            $idade--;
        }
        return $idade;
    }
    
  
    
   
    
    /**
     *View::formatarMoeda
     *
     * Formata o valor registrado no banco de dados para real.
     *
     * @access public
     * @author Janaína Paixão <janainap@gmail.com>
     * @since  v1.0
     */ 
    public function formatarMoeda($valor)
    {         
        
        if($valor)
        {
            return "R$ ".number_format($valor, 2, ',', ' ');

        }
       
    }
    
    
       /**
     *Model::formatarDecimal
     *
     * Formata número decimal orginado do banco de dados para a visualização
     *
     * @access public
     * @author Janaína Paixão <janainap@gmail.com>
     * @since  v1.0
     */ 
    public function formatarDecimal($valor)
    {       
      
        if($valor)
        {
            return number_format($valor, 2, ',', ' ');

        }
        
        
    }
    
    
    
    
    
    
    function extenso($valor=0, $maiusculas=false) {
        // verifica se tem virgula decimal
        if (strpos($valor, ",") > 0) {
                // retira o ponto de milhar, se tiver
                $valor = str_replace(".", "", $valor);

                // troca a virgula decimal por ponto decimal
                $valor = str_replace(",", ".", $valor);
        }
        $singular = array("centavo", "real", "mil", "milhão", "bilhão", "trilhão", "quatrilhão");
        $plural = array("centavos", "reais", "mil", "milhões", "bilhões", "trilhões",
                "quatrilhões");

        $c = array("", "cem", "duzentos", "trezentos", "quatrocentos",
                "quinhentos", "seiscentos", "setecentos", "oitocentos", "novecentos");
        $d = array("", "dez", "vinte", "trinta", "quarenta", "cinquenta",
                "sessenta", "setenta", "oitenta", "noventa");
        $d10 = array("dez", "onze", "doze", "treze", "quatorze", "quinze",
                "dezesseis", "dezesete", "dezoito", "dezenove");
        $u = array("", "um", "dois", "três", "quatro", "cinco", "seis",
                "sete", "oito", "nove");

        $z = 0;

        $valor = number_format($valor, 2, ".", ".");
        $inteiro = explode(".", $valor);
        $cont = count($inteiro);
        for ($i = 0; $i < $cont; $i++)
                for ($ii = strlen($inteiro[$i]); $ii < 3; $ii++)
                $inteiro[$i] = "0" . $inteiro[$i];

        $fim = $cont - ($inteiro[$cont - 1] > 0 ? 1 : 2);
        $rt = '';
        for ($i = 0; $i < $cont; $i++) {
                $valor = $inteiro[$i];
                $rc = (($valor > 100) && ($valor < 200)) ? "cento" : $c[$valor[0]];
                $rd = ($valor[1] < 2) ? "" : $d[$valor[1]];
                $ru = ($valor > 0) ? (($valor[1] == 1) ? $d10[$valor[2]] : $u[$valor[2]]) : "";

                $r = $rc . (($rc && ($rd || $ru)) ? " e " : "") . $rd . (($rd &&
                        $ru) ? " e " : "") . $ru;
                $t = $cont - 1 - $i;
                $r .= $r ? " " . ($valor > 1 ? $plural[$t] : $singular[$t]) : "";
                if ($valor == "000"

                )$z++; elseif ($z > 0)
                $z--;
                if (($t == 1) && ($z > 0) && ($inteiro[0] > 0))
                $r .= ( ($z > 1) ? " de " : "") . $plural[$t];
                if ($r)
                $rt = $rt . ((($i > 0) && ($i <= $fim) &&
                        ($inteiro[0] > 0) && ($z < 1)) ? ( ($i < $fim) ? ", " : " e ") : " ") . $r;
        }

        if (!$maiusculas) {
                return($rt ? $rt : "zero");
        } elseif ($maiusculas == "2") {
                return (strtoupper($rt) ? strtoupper($rt) : "Zero");
        } else {
                return (ucwords($rt) ? ucwords($rt) : "Zero");
        }
        }
        
        
        
        
        
        
        
        
    function numeroEscrito($n) {
    $numeros[1][0] = '';
    $numeros[1][1] = 'um';
    $numeros[1][2] = 'dois';
    $numeros[1][3] = 'três';
    $numeros[1][4] = 'quatro';
    $numeros[1][5] = 'cinco';
    $numeros[1][6] = 'seis';
    $numeros[1][7] = 'sete';
    $numeros[1][8] = 'oito';
    $numeros[1][9] = 'nove';
    $numeros[2][0] = '';
    $numeros[2][10] = 'dez';
    $numeros[2][11] = 'onze';
    $numeros[2][12] = 'doze';
    $numeros[2][13] = 'treze';
    $numeros[2][14] = 'quatorze';
    $numeros[2][15] = 'quinze';
    $numeros[2][16] = 'dezesseis';
    $numeros[2][17] = 'dezesete';
    $numeros[2][18] = 'dezoito';
    $numeros[2][19] = 'dezenove';
    $numeros[2][2] = 'vinte';
    $numeros[2][3] = 'trinta';
    $numeros[2][4] = 'quarenta';
    $numeros[2][5] = 'cinquenta';
    $numeros[2][6] = 'sessenta';
    $numeros[2][7] = 'setenta';
    $numeros[2][8] = 'oitenta';
    $numeros[2][9] = 'noventa';
    $numeros[3][0] = '';
    $numeros[3][1] = 'cem';
    $numeros[3][2] = 'duzentos';
    $numeros[3][3] = 'trezentos';
    $numeros[3][4] = 'quatrocentos';
    $numeros[3][5] = 'quinhentos';
    $numeros[3][6] = 'seiscentos';
    $numeros[3][7] = 'setecentos';
    $numeros[3][8] = 'oitocentos';
    $numeros[3][9] = 'novecentos';
 
    $n = number_format($n, 2, '', '');
    $n = substr($n, 0, strlen($n) - 2);
    $qtd = strlen($n);
    $compl[0] = ' mil ';
    $compl[1] = ' millhão ';
    $compl[2] = ' millhões ';
    $numero = "";
    $casa = $qtd;
    $pulaum = false;
    $x = 0;
    for ($y = 0; $y < $qtd; $y++) {
        if ($casa == 5) {
            if ($n[$x] == '1') {
                $indice = '1' . $n[$x + 1];
                $pulaum = true;
            } else {
                $indice = $n[$x];
            }
 
            if ($n[$x] != '0') {
                if (isset($n[$x - 1])) {
                    $numero .= ' e ';
                }
                $numero .= $numeros[2][$indice];
                if ($pulaum) {
                    $numero .= ' ' . $compl[0];
                }
            }
        }
 
        if ($casa == 4) {
            if (!$pulaum) {
                if ($n[$x] != '0') {
                    if (isset($n[$x - 1])) {
                        $numero .= ' e ';
                    }
                }
            }
            $numero .= $numeros[1][$n[$x]] . ' ' . $compl[0];
        }
 
        if ($casa == 3) {
            if ($n[$x] == '1' && $n[$x + 1] != '0') {
                $numero .= 'cento ';
            } else {
                if ($n[$x] != '0') {
                    if (isset($n[$x - 1])) {
                        $numero .= ' e ';
                    }
                    $numero .= $numeros[3][$n[$x]];
                }
            }
        }
 
        if ($casa == 2) {
            if ($n[$x] == '1') {
                $indice = '1' . $n[$x + 1];
                $casa = 0;
            } else {
                $indice = $n[$x];
            }
 
            if ($n[$x] != '0') {
                if (isset($n[$x - 1])) {
                    $numero .= ' e ';
                }
                $numero .= $numeros[2][$indice];
            }
        }
 
        if ($casa == 1) {
            if ($n[$x] != '0') {
                $numero .= ' e ' . $numeros[1][$n[$x]];
            } else {
                $numero .= '';
            }
        }
 
        if ($pulaum) {
            $casa--;
            $x++;
            $pulaum = false;
        }
 
        $casa--;
        $x++;
    }
    //Aqui é onde vai ser a saída desse texto.
    return ucfirst($numero);
}

  
}

?> 
